﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework;

namespace Twodi.Aspect.Args
{
    /// <summary>
    /// Argumentos utilizados quando a posição de um componente é modificada.
    /// </summary>
    public class PositionChangedEventArgs : EventArgs
    {
        /// <summary>
        /// Posição anterior.
        /// </summary>
        public Vector2 PreviousPosition { get; set; }

        /// <summary>
        /// Posição atual.
        /// </summary>
        public Vector2 ActualPosition { get; set; }

        /// <summary>
        /// Diferença de posição atual da anterior.
        /// </summary>
        public Vector2 Difference { get { return ActualPosition - PreviousPosition; } }

        /// <summary>
        /// Construtor default.
        /// </summary>
        /// <param name="previous">Posição anterior.</param>
        /// <param name="actual">Posição atual.</param>
        public PositionChangedEventArgs(Vector2 previous, Vector2 actual)
        {
            this.PreviousPosition = previous;
            this.ActualPosition = actual;
        }

        /// <summary>
        /// Construtor default.
        /// </summary>
        /// <param name="previous">Posição anterior.</param>
        /// <param name="actual">Posição atual.</param>
        public PositionChangedEventArgs(Point previous, Point actual)
        {
            this.PreviousPosition = new Vector2(previous.X, previous.Y);
            this.ActualPosition = new Vector2(actual.X, actual.Y);
        }
    }
}
